#ifndef VIRTUAL_FILE_SYSTEM_H
#define VIRTUAL_FILE_SYSTEM_H

typedef struct {
    const char *path;
    const unsigned char *data;
    int length;
} VirtualFile;

static const VirtualFile virtual_files[] = {
    {
        "/index.html",
        (const unsigned char[]){0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a,0x09,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x57,0x65,0x62,0x55,0x49,0x20,0x2d,0x20,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0d,0x0a,0x09,0x09,0x09,0x62,0x6f,0x64,0x79,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x27,0x41,0x72,0x69,0x61,0x6c,0x27,0x2c,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x77,0x68,0x69,0x74,0x65,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2d,0x67,0x72,0x61,0x64,0x69,0x65,0x6e,0x74,0x28,0x74,0x6f,0x20,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x23,0x35,0x30,0x37,0x64,0x39,0x31,0x2c,0x20,0x23,0x31,0x63,0x35,0x39,0x36,0x66,0x2c,0x20,0x23,0x30,0x32,0x32,0x37,0x33,0x37,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x38,0x70,0x78,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2c,0x0d,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x31,0x30,0x70,0x78,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x72,0x61,0x64,0x69,0x75,0x73,0x3a,0x20,0x33,0x70,0x78,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x20,0x31,0x70,0x78,0x20,0x73,0x6f,0x6c,0x69,0x64,0x20,0x23,0x63,0x63,0x63,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x78,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x30,0x20,0x33,0x70,0x78,0x20,0x35,0x70,0x78,0x20,0x72,0x67,0x62,0x61,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2e,0x31,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x30,0x2e,0x32,0x73,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x66,0x66,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x36,0x70,0x78,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x68,0x31,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x2d,0x37,0x70,0x78,0x20,0x31,0x30,0x70,0x78,0x20,0x37,0x70,0x78,0x20,0x72,0x67,0x62,0x28,0x36,0x37,0x20,0x35,0x37,0x20,0x35,0x37,0x20,0x2f,0x20,0x37,0x36,0x25,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x63,0x39,0x39,0x31,0x33,0x64,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x3a,0x66,0x6f,0x63,0x75,0x73,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x6f,0x75,0x74,0x6c,0x69,0x6e,0x65,0x3a,0x20,0x6e,0x6f,0x6e,0x65,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x0d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x6c,0x69,0x6e,0x6b,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x61,0x63,0x74,0x69,0x76,0x65,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x76,0x69,0x73,0x69,0x74,0x65,0x64,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x30,0x62,0x63,0x61,0x63,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x3c,0x2f,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0d,0x0a,0x09,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x09,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x68,0x33,0x20,0x69,0x64,0x3d,0x22,0x74,0x69,0x74,0x6c,0x65,0x22,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x45,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3c,0x2f,0x68,0x33,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x69,0x6d,0x67,0x20,0x73,0x72,0x63,0x3d,0x22,0x73,0x76,0x67,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x73,0x76,0x67,0x22,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x70,0x3e,0x0d,0x0a,0x09,0x09,0x09,0x54,0x68,0x69,0x73,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x73,0x20,0x65,0x6d,0x62,0x65,0x64,0x64,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x2f,0x70,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x68,0x34,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x68,0x34,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x69,0x64,0x3d,0x22,0x45,0x78,0x69,0x74,0x22,0x3e,0x45,0x78,0x69,0x74,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e,0x0d,0x0a,0x09,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a,0x0d,0x0a,0x09,0x3c,0x21,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x61,0x70,0x70,0x20,0x2d,0x2d,0x3e,0x0d,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0d,0x0a,0x0d,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0d,0x0a,0x0d,0x0a,0x09,0x09,0x2f,0x2f,0x20,0x4a,0x61,0x76,0x61,0x53,0x63,0x72,0x69,0x70,0x74,0x20,0x45,0x78,0x61,0x6d,0x70,0x6c,0x65,0x0d,0x0a,0x09,0x09,0x2f,0x2a,0x0d,0x0a,0x09,0x09,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x27,0x44,0x4f,0x4d,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x4c,0x6f,0x61,0x64,0x65,0x64,0x27,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x4f,0x4d,0x20,0x69,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x2e,0x20,0x43,0x68,0x65,0x63,0x6b,0x20,0x69,0x66,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x0d,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x65,0x62,0x75,0x69,0x20,0x21,0x3d,0x3d,0x20,0x27,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x27,0x29,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x53,0x65,0x74,0x20,0x65,0x76,0x65,0x6e,0x74,0x73,0x20,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x73,0x65,0x74,0x45,0x76,0x65,0x6e,0x74,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x28,0x28,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x65,0x20,0x3d,0x3d,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x65,0x76,0x65,0x6e,0x74,0x2e,0x43,0x4f,0x4e,0x4e,0x45,0x43,0x54,0x45,0x44,0x29,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x69,0x73,0x20,0x65,0x73,0x74,0x61,0x62,0x6c,0x69,0x73,0x68,0x65,0x64,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x2e,0x27,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x54,0x65,0x73,0x74,0x28,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x65,0x20,0x3d,0x3d,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x65,0x76,0x65,0x6e,0x74,0x2e,0x44,0x49,0x53,0x43,0x4f,0x4e,0x4e,0x45,0x43,0x54,0x45,0x44,0x29,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x69,0x73,0x20,0x6c,0x6f,0x73,0x74,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x44,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x2e,0x27,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x54,0x68,0x65,0x20,0x76,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x66,0x69,0x6c,0x65,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x60,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x64,0x0d,0x0a,0x09,0x09,0x09,0x09,0x61,0x6c,0x65,0x72,0x74,0x28,0x27,0x50,0x6c,0x65,0x61,0x73,0x65,0x20,0x61,0x64,0x64,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x48,0x54,0x4d,0x4c,0x2e,0x27,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x7d,0x29,0x3b,0x0d,0x0a,0x0d,0x0a,0x09,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x65,0x62,0x75,0x69,0x54,0x65,0x73,0x74,0x28,0x29,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x20,0x61,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0d,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x77,0x65,0x62,0x75,0x69,0x2e,0x69,0x73,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x28,0x29,0x29,0x20,0x7b,0x0d,0x0a,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x57,0x68,0x65,0x6e,0x20,0x79,0x6f,0x75,0x20,0x62,0x69,0x6e,0x64,0x20,0x61,0x20,0x66,0x75,0x6e,0x63,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x77,0x65,0x62,0x75,0x69,0x20,0x77,0x69,0x6c,0x6c,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x74,0x68,0x65,0x20,0x60,0x66,0x75,0x6e,0x63,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x69,0x6e,0x20,0x74,0x68,0x72,0x65,0x65,0x20,0x70,0x6c,0x61,0x63,0x65,0x73,0x3a,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x20,0x20,0x3a,0x20,0x66,0x75,0x6e,0x63,0x28,0x2e,0x2e,0x2e,0x29,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x3a,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x66,0x75,0x6e,0x63,0x28,0x2e,0x2e,0x2e,0x29,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x4d,0x65,0x74,0x68,0x6f,0x64,0x20,0x20,0x20,0x3a,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x66,0x75,0x6e,0x63,0x27,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x5b,0x21,0x5d,0x20,0x4e,0x6f,0x74,0x65,0x3a,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x63,0x72,0x65,0x61,0x74,0x69,0x6f,0x6e,0x20,0x66,0x61,0x69,0x6c,0x73,0x20,0x77,0x68,0x65,0x6e,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x61,0x20,0x73,0x69,0x6d,0x69,0x6c,0x61,0x72,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x61,0x6c,0x72,0x65,0x61,0x64,0x79,0x20,0x65,0x78,0x69,0x73,0x74,0x2e,0x0d,0x0a,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6f,0x6f,0x20,0x3d,0x20,0x27,0x48,0x65,0x6c,0x6c,0x6f,0x27,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x74,0x20,0x62,0x61,0x72,0x20,0x3d,0x20,0x31,0x32,0x33,0x34,0x35,0x36,0x3b,0x0d,0x0a,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0d,0x0a,0x09,0x09,0x09,0x09,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x6f,0x66,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0d,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x6d,0x65,0x74,0x68,0x6f,0x64,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x29,0x60,0x0d,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x27,0x2c,0x20,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x55,0x73,0x69,0x6e,0x67,0x20,0x61,0x77,0x61,0x69,0x74,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x27,0x2c,0x20,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x2a,0x2f,0x0d,0x0a,0x0d,0x0a,0x09,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0d,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a},
        3222
    },
    {
        "/sub/index.html",
        (const unsigned char[]){0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a,0x09,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x57,0x65,0x62,0x55,0x49,0x20,0x2d,0x20,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0d,0x0a,0x09,0x09,0x09,0x62,0x6f,0x64,0x79,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x27,0x41,0x72,0x69,0x61,0x6c,0x27,0x2c,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x77,0x68,0x69,0x74,0x65,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2d,0x67,0x72,0x61,0x64,0x69,0x65,0x6e,0x74,0x28,0x74,0x6f,0x20,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x23,0x35,0x30,0x37,0x64,0x39,0x31,0x2c,0x20,0x23,0x31,0x63,0x35,0x39,0x36,0x66,0x2c,0x20,0x23,0x30,0x32,0x32,0x37,0x33,0x37,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x38,0x70,0x78,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2c,0x0d,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x31,0x30,0x70,0x78,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x72,0x61,0x64,0x69,0x75,0x73,0x3a,0x20,0x33,0x70,0x78,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x20,0x31,0x70,0x78,0x20,0x73,0x6f,0x6c,0x69,0x64,0x20,0x23,0x63,0x63,0x63,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x78,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x30,0x20,0x33,0x70,0x78,0x20,0x35,0x70,0x78,0x20,0x72,0x67,0x62,0x61,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2e,0x31,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x30,0x2e,0x32,0x73,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x66,0x66,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x36,0x70,0x78,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x68,0x31,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x2d,0x37,0x70,0x78,0x20,0x31,0x30,0x70,0x78,0x20,0x37,0x70,0x78,0x20,0x72,0x67,0x62,0x28,0x36,0x37,0x20,0x35,0x37,0x20,0x35,0x37,0x20,0x2f,0x20,0x37,0x36,0x25,0x29,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x63,0x39,0x39,0x31,0x33,0x64,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x3a,0x66,0x6f,0x63,0x75,0x73,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x6f,0x75,0x74,0x6c,0x69,0x6e,0x65,0x3a,0x20,0x6e,0x6f,0x6e,0x65,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x0d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x6c,0x69,0x6e,0x6b,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x61,0x63,0x74,0x69,0x76,0x65,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x76,0x69,0x73,0x69,0x74,0x65,0x64,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0d,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x30,0x62,0x63,0x61,0x63,0x3b,0x0d,0x0a,0x09,0x09,0x09,0x7d,0x0d,0x0a,0x09,0x09,0x3c,0x2f,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0d,0x0a,0x09,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x09,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x70,0x3e,0x0d,0x0a,0x09,0x09,0x09,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x66,0x69,0x6c,0x65,0x20,0x65,0x6d,0x62,0x65,0x64,0x64,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x2f,0x70,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0d,0x0a,0x09,0x09,0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x69,0x64,0x3d,0x22,0x45,0x78,0x69,0x74,0x22,0x3e,0x45,0x78,0x69,0x74,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e,0x0d,0x0a,0x09,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a,0x0d,0x0a,0x09,0x3c,0x21,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x61,0x70,0x70,0x20,0x2d,0x2d,0x3e,0x0d,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0d,0x0a,0x0d,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a},
        1216
    },
    {
        "/svg/webui.svg",
        (const unsigned char[]){0x3c,0x73,0x76,0x67,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x70,0x78,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x70,0x78,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x62,0x78,0x3d,0x22,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x62,0x6f,0x78,0x79,0x2d,0x73,0x76,0x67,0x2e,0x63,0x6f,0x6d,0x22,0x3e,0x20,0x3c,0x64,0x65,0x66,0x73,0x3e,0x20,0x3c,0x6d,0x61,0x73,0x6b,0x20,0x69,0x64,0x3d,0x22,0x63,0x69,0x72,0x63,0x6c,0x65,0x2d,0x6d,0x61,0x73,0x6b,0x22,0x3e,0x20,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0x20,0x3c,0x63,0x69,0x72,0x63,0x6c,0x65,0x20,0x63,0x78,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x63,0x79,0x3d,0x22,0x36,0x30,0x22,0x20,0x72,0x3d,0x22,0x31,0x36,0x2e,0x38,0x22,0x2f,0x3e,0x20,0x3c,0x2f,0x6d,0x61,0x73,0x6b,0x3e,0x20,0x3c,0x62,0x78,0x3a,0x67,0x72,0x69,0x64,0x20,0x78,0x3d,0x22,0x30,0x22,0x20,0x79,0x3d,0x22,0x30,0x22,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x38,0x33,0x2e,0x33,0x36,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x39,0x36,0x2e,0x37,0x35,0x33,0x22,0x2f,0x3e,0x20,0x3c,0x2f,0x64,0x65,0x66,0x73,0x3e,0x20,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x32,0x61,0x36,0x36,0x39,0x39,0x22,0x20,0x6d,0x61,0x73,0x6b,0x3d,0x22,0x75,0x72,0x6c,0x28,0x23,0x63,0x69,0x72,0x63,0x6c,0x65,0x2d,0x6d,0x61,0x73,0x6b,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x22,0x2f,0x3e,0x20,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x20,0x33,0x39,0x31,0x2e,0x30,0x37,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x33,0x38,0x36,0x2e,0x38,0x34,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x38,0x39,0x2e,0x30,0x32,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x39,0x32,0x2e,0x33,0x35,0x38,0x20,0x33,0x37,0x31,0x2e,0x35,0x38,0x34,0x20,0x4c,0x20,0x33,0x39,0x37,0x2e,0x32,0x30,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x39,0x39,0x2e,0x33,0x30,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x34,0x2e,0x31,0x34,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x4c,0x20,0x34,0x30,0x37,0x2e,0x35,0x30,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x39,0x2e,0x36,0x30,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x35,0x2e,0x33,0x37,0x38,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x30,0x33,0x2e,0x31,0x39,0x34,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x33,0x39,0x38,0x2e,0x32,0x33,0x38,0x20,0x33,0x35,0x38,0x2e,0x33,0x39,0x36,0x20,0x4c,0x20,0x33,0x39,0x33,0x2e,0x32,0x35,0x34,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x31,0x32,0x2e,0x37,0x31,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x31,0x32,0x2e,0x37,0x31,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x37,0x33,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x37,0x33,0x38,0x20,0x33,0x35,0x37,0x2e,0x33,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x35,0x37,0x2e,0x33,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x36,0x34,0x2e,0x31,0x36,0x34,0x20,0x4c,0x20,0x34,0x32,0x32,0x2e,0x36,0x32,0x32,0x20,0x33,0x36,0x34,0x2e,0x31,0x36,0x34,0x20,0x4c,0x20,0x34,0x32,0x32,0x2e,0x36,0x32,0x32,0x20,0x33,0x36,0x36,0x2e,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x36,0x36,0x2e,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x37,0x33,0x2e,0x30,0x39,0x36,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x38,0x35,0x20,0x33,0x37,0x33,0x2e,0x30,0x39,0x36,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x38,0x35,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x32,0x39,0x2e,0x39,0x35,0x39,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x32,0x39,0x2e,0x39,0x35,0x39,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x33,0x37,0x2e,0x39,0x31,0x31,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x38,0x31,0x35,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x34,0x34,0x31,0x2e,0x32,0x30,0x31,0x20,0x33,0x35,0x36,0x2e,0x30,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x35,0x38,0x37,0x20,0x33,0x35,0x36,0x2e,0x36,0x33,0x32,0x20,0x34,0x34,0x33,0x2e,0x33,0x34,0x33,0x20,0x33,0x35,0x37,0x2e,0x37,0x36,0x36,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x35,0x38,0x2e,0x39,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x36,0x30,0x2e,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x36,0x31,0x2e,0x39,0x35,0x32,0x20,0x34,0x34,0x33,0x2e,0x33,0x30,0x31,0x20,0x33,0x36,0x33,0x2e,0x30,0x37,0x32,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x35,0x30,0x33,0x20,0x33,0x36,0x34,0x2e,0x31,0x39,0x32,0x20,0x34,0x34,0x31,0x2e,0x31,0x30,0x33,0x20,0x33,0x36,0x34,0x2e,0x37,0x38,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x38,0x36,0x37,0x20,0x33,0x36,0x35,0x2e,0x33,0x31,0x32,0x20,0x34,0x34,0x33,0x2e,0x38,0x38,0x39,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x36,0x37,0x2e,0x37,0x37,0x36,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x36,0x39,0x2e,0x34,0x38,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x37,0x31,0x2e,0x31,0x36,0x34,0x20,0x34,0x34,0x34,0x2e,0x30,0x38,0x35,0x20,0x33,0x37,0x32,0x2e,0x34,0x31,0x20,0x51,0x20,0x34,0x34,0x33,0x2e,0x32,0x35,0x39,0x20,0x33,0x37,0x33,0x2e,0x36,0x35,0x36,0x20,0x34,0x34,0x31,0x2e,0x37,0x36,0x31,0x20,0x33,0x37,0x34,0x2e,0x33,0x32,0x38,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x36,0x33,0x20,0x33,0x37,0x35,0x20,0x34,0x33,0x38,0x2e,0x32,0x34,0x37,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x4c,0x20,0x34,0x33,0x37,0x2e,0x37,0x39,0x39,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x37,0x30,0x33,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x34,0x34,0x30,0x2e,0x38,0x33,0x37,0x20,0x33,0x36,0x33,0x2e,0x30,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x36,0x32,0x2e,0x31,0x34,0x38,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x36,0x30,0x2e,0x36,0x30,0x38,0x20,0x51,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x35,0x39,0x2e,0x30,0x36,0x38,0x20,0x34,0x34,0x30,0x2e,0x38,0x33,0x37,0x20,0x33,0x35,0x38,0x2e,0x31,0x37,0x32,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x37,0x30,0x33,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x34,0x33,0x37,0x2e,0x37,0x39,0x39,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x4c,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x5a,0x20,0x4d,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x4c,0x20,0x34,0x33,0x38,0x2e,0x30,0x37,0x39,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x30,0x37,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x34,0x34,0x31,0x2e,0x34,0x36,0x37,0x20,0x33,0x37,0x32,0x2e,0x31,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x37,0x31,0x2e,0x31,0x30,0x38,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x36,0x39,0x2e,0x34,0x32,0x38,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x36,0x37,0x2e,0x37,0x34,0x38,0x20,0x34,0x34,0x31,0x2e,0x34,0x36,0x37,0x20,0x33,0x36,0x36,0x2e,0x37,0x34,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x30,0x37,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x34,0x33,0x38,0x2e,0x30,0x37,0x39,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x4c,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x5a,0x22,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x3d,0x22,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x31,0x2e,0x32,0x36,0x34,0x35,0x39,0x32,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x31,0x2e,0x32,0x34,0x30,0x33,0x30,0x33,0x2c,0x20,0x2d,0x34,0x38,0x33,0x2e,0x38,0x39,0x39,0x33,0x35,0x33,0x2c,0x20,0x2d,0x33,0x35,0x35,0x2e,0x38,0x34,0x35,0x31,0x35,0x34,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66,0x69,0x6c,0x6c,0x3a,0x20,0x72,0x67,0x62,0x28,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x29,0x3b,0x22,0x2f,0x3e,0x20,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x20,0x34,0x35,0x36,0x2e,0x33,0x33,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x51,0x20,0x34,0x35,0x33,0x2e,0x36,0x37,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x34,0x35,0x31,0x2e,0x37,0x33,0x32,0x20,0x33,0x37,0x34,0x2e,0x32,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x39,0x2e,0x37,0x38,0x36,0x20,0x33,0x37,0x33,0x2e,0x31,0x35,0x32,0x20,0x34,0x34,0x38,0x2e,0x37,0x32,0x32,0x20,0x33,0x37,0x31,0x2e,0x31,0x37,0x38,0x20,0x51,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x36,0x39,0x2e,0x32,0x30,0x34,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x4c,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x36,0x38,0x2e,0x30,0x35,0x36,0x20,0x34,0x35,0x32,0x2e,0x32,0x39,0x32,0x20,0x33,0x36,0x39,0x2e,0x31,0x39,0x20,0x51,0x20,0x34,0x35,0x32,0x2e,0x38,0x36,0x36,0x20,0x33,0x37,0x30,0x2e,0x33,0x32,0x34,0x20,0x34,0x35,0x33,0x2e,0x39,0x31,0x36,0x20,0x33,0x37,0x30,0x2e,0x39,0x32,0x36,0x20,0x51,0x20,0x34,0x35,0x34,0x2e,0x39,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x34,0x35,0x36,0x2e,0x33,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x51,0x20,0x34,0x35,0x37,0x2e,0x37,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x34,0x35,0x38,0x2e,0x38,0x30,0x32,0x20,0x33,0x37,0x30,0x2e,0x39,0x32,0x36,0x20,0x51,0x20,0x34,0x35,0x39,0x2e,0x38,0x33,0x38,0x20,0x33,0x37,0x30,0x2e,0x33,0x32,0x34,0x20,0x34,0x36,0x30,0x2e,0x34,0x31,0x32,0x20,0x33,0x36,0x39,0x2e,0x31,0x39,0x20,0x51,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x36,0x38,0x2e,0x30,0x35,0x36,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x4c,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x36,0x39,0x2e,0x31,0x37,0x36,0x20,0x34,0x36,0x33,0x2e,0x39,0x35,0x34,0x20,0x33,0x37,0x31,0x2e,0x31,0x35,0x20,0x51,0x20,0x34,0x36,0x32,0x2e,0x38,0x39,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x34,0x36,0x30,0x2e,0x39,0x34,0x34,0x20,0x33,0x37,0x34,0x2e,0x32,0x30,0x32,0x20,0x51,0x20,0x34,0x35,0x38,0x2e,0x39,0x39,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x34,0x35,0x36,0x2e,0x33,0x33,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x5a,0x20,0x4d,0x20,0x34,0x36,0x38,0x2e,0x32,0x36,0x33,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x36,0x38,0x2e,0x32,0x36,0x33,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x37,0x32,0x2e,0x33,0x32,0x33,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x37,0x32,0x2e,0x33,0x32,0x33,0x20,0x33,0x37,0x35,0x20,0x5a,0x22,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x3d,0x22,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x31,0x2e,0x32,0x36,0x34,0x35,0x39,0x32,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x31,0x2e,0x32,0x34,0x30,0x33,0x30,0x33,0x2c,0x20,0x2d,0x34,0x38,0x33,0x2e,0x38,0x39,0x39,0x33,0x35,0x33,0x2c,0x20,0x2d,0x33,0x35,0x35,0x2e,0x38,0x34,0x35,0x31,0x35,0x34,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66,0x69,0x6c,0x6c,0x3a,0x20,0x72,0x67,0x62,0x28,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x29,0x3b,0x22,0x2f,0x3e,0x3c,0x2f,0x73,0x76,0x67,0x3e},
        2347
    },
};

static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);

static const char* index_files[] = {
    "//", "/index.html",
    "/sub/", "/sub/index.html",
    NULL
};

bool virtual_file_system(const char* path, const unsigned char** file, int* length) {
    for (int i = 0; i < virtual_files_count; ++i) {
        if (strcmp(virtual_files[i].path, path) == 0) {
            *file = virtual_files[i].data;
            *length = virtual_files[i].length;
            return true;
        }
    }
    return false;
}

const void* vfs(const char* path, int* length) {
    const unsigned char* file_data;
    int file_length;

    if (virtual_file_system(path, &file_data, &file_length)) {
        const char* content_type = webui_get_mime_type(path);
        const char* http_header_template = "HTTP/1.1 200 OK\r\n"
                                            "Content-Type: %s\r\n"
                                            "Content-Length: %d\r\n"
                                            "Cache-Control: no-cache\r\n\r\n";
        int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);
        *length = header_length + file_length;
        unsigned char* response = (unsigned char*) webui_malloc(*length);
        snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);
        memcpy(response + header_length, file_data, file_length);
        return response;
    } else {
        // Check for index file redirection
        char redirect_path[1024];
        snprintf(redirect_path, sizeof(redirect_path), "%s", path);
        size_t len = strlen(redirect_path);
        if (redirect_path[len - 1] != '/') {
            redirect_path[len] = '/';
            redirect_path[len + 1] = '\0';
        }
        for (int i = 0; index_files[i] != NULL; i += 2) {
            if (strcmp(index_files[i], redirect_path) == 0) {
                const char* location_header = "HTTP/1.1 302 Found\r\n"
                                            "Location: %s\r\n"
                                            "Cache-Control: no-cache\r\n\r\n";
                int header_length = snprintf(NULL, 0, location_header, index_files[i + 1]);
                *length = header_length;
                unsigned char* response = (unsigned char*) webui_malloc(*length);
                snprintf((char*) response, header_length + 1, location_header, index_files[i + 1]);
                return response;
            }
        }
        return NULL;
    }
}

#endif // VIRTUAL_FILE_SYSTEM_H
